package com.liusy.mapcache;

public interface IMapCache {

    /**
     * 每次访问时都更新数据
     */
    public static long REFRESH_EVERY_VISIT = 0L;
    /**
     * 隔15分钟之后更新
     */
    public static long REFRESH_INTERVAL_15MIN = 900000L;
    /**
     * 隔1小时之后更新
     */
    public static long REFRESH_INTERVAL_1HOUR = 3600000L;
    /**
     * 隔3小时之后更新
     */
    public static long REFRESH_INTERVAL_3HOUR = 10800000L;
    /**
     * 隔1天之后更新
     */
    public static long REFRESH_INTERVAL_1DAY = 86400000L;
    
    /**
     * 从缓存中取数据（使用默认红缓存间隔）
     * @param dataKey
     * @param dataType
     * @return
     */
    <T> T getData(String dataKey, Class<T> dataType);
    
    /**
     * 从缓存中取数据
     * @param dataKey
     * @param dataType
     * @param refreshInterval
     * @return
     */
    <T> T getData(String dataKey, Class<T> dataType, long refreshInterval);
    
    /**
     * 新增或更新缓存数据
     * @param dataKey
     * @param data
     * @return
     */
    <T> T updateData(String dataKey, T data);
    
    /**
     * 获取当前缓存数据个数
     * @return
     */
    int getCurrentCount();
    
    /**
     * 获取当前缓存数据的所有Key值
     * @return
     */
    String[] getCurrentKeys();
}
